package com.buss.product.dao;

import com.buss.core.dic.RecordStatus;
import com.buss.core.persistence.OrderBy;
import com.buss.core.persistence.Paginalbe;
import com.buss.core.persistence.ResultList;
import com.buss.product.model.Goods;

public interface GoodsDao {

	/**
	 * 新增商品信息
	 * @param goods
	 * @return
	 */
	public Goods saveGoods(Goods goods);
	
	/**
	 * 修改商品信息
	 * @param goods
	 */
	public void editGoods(Goods goods);
	
	/**
	 * 删除指定商品信息
	 * @param ids
	 */
	public void removeGoods(Long[] ids);
	
	/**
	 * 获取指定商品信息
	 * @param id
	 * @return
	 */
	public Goods loadGoods(Long id);
	
	/**
	 * 根据商品分类编码和商品Code获取商品信息
	 * @param categoryId
	 * @param code
	 * @return
	 */
	public Goods loadGoods(Long categoryId,String code);
	
	/**
	 * 根据单位编码和商品获取商品信息
	 * @param companyId
	 * @param code
	 * @return
	 */
	public Goods loadGoods(String companyId,String code);
	
	/**
	 * 根据商品分类编码和货号获取商品信息
	 * @param categoryId
	 * @param styleNo
	 * @return
	 */
	public Goods loadGoodsByStyleNo(Long categoryId,String styleNo);
	
	/**
	 * 获取商品信息列表
	 * @param categoryId	商品分类编码
	 * @param name		商品名称
	 * @param pinyin	商品拼音码
	 * @param brandId	商品所属品牌
	 * @param branchIds	商品所属库房
	 * @param status	商品状态
	 * @param orderBy	列表排序
	 * @param page	分页信息
	 * @return
	 */
	public ResultList<Goods> queryGoods(Long[] categoryIds,String name,String pinyin,
			Long brandId,String branchIds,String styleNo,RecordStatus status,OrderBy orderBy,Paginalbe page);
	
}
